import {request} from "../../request/index";
import regeneratorRuntime from '../../lib/runtime/runtime';

Page({
    data: {
        tabs: [
            {
                id: 0,
                value: "综合",
                isActive: true
            },
            {
                id: 1,
                value: "销量",
                isActive: false
            },
            {
                id: 2,
                value: "价格",
                isActive: false
            }
        ],
        //商品列表
        goodsList: []
    },

    //接口要的参数
    QueryParams: {
        query: '',
        cid: '',
        pagenum: 1,
        pagesize: 10
    },

    //总页数
    totalPages: 1,

    onLoad: function (options) {
        this.QueryParams.cid = options.cid || "";      //从分类页过来有 cid 无 query
        this.QueryParams.query = options.query ? options.query.substring(0, 1): "";  //从首页过来无 cid 有 query
        this.getGoodsList();
    },

    async getGoodsList() {
        const res = await request({url: '/goods/search', data: this.QueryParams});
        //获取总条数并计算总页数
        const total = res.total;
        this.totalPages = Math.ceil(total / this.QueryParams.pagesize);

        //商品列表
        let goods = res.goods || [];
        const defaultImg = 'https://ww1.sinaimg.cn/large/007rAy9hgy1g24by9t530j30i20i2glm.jpg';
        goods = goods.map(item => ({
            ...item,
            goods_small_logo: item.goods_small_logo || defaultImg
        }));

        //记得拼接之前存在的数据
        this.setData({goodsList: [...this.data.goodsList, ...goods]});

        //关闭下拉刷新窗口，如果没有调用下拉刷新窗口，直接关闭也没有影响。
        wx.stopPullDownRefresh();
    },

    handleTabItemChange(e) {
        const {index} = e.detail;
        const {tabs} = this.data;
        const newTabs = tabs.map((item, i) => ({...item, isActive: i === index}));
        this.setData({tabs: newTabs});
    },

    /*
1 用户上滑页面 滚动条触底 开始加载下一页数据
  1 找到滚动条触底事件  微信小程序官方开发文档寻找
  2 判断还有没有下一页数据
    1 获取到总页数  只有总条数
      总页数 = Math.ceil(总条数 /  页容量  pagesize)
      总页数     = Math.ceil( 23 / 10 ) = 3
    2 获取到当前的页码  pagenum
    3 判断一下 当前的页码是否大于等于 总页数
      表示 没有下一页数据

  3 假如没有下一页数据 弹出一个提示
  4 假如还有下一页数据 来加载下一页数据
    1 当前的页码 ++
    2 重新发送请求
    3 数据请求回来  要对data中的数组 进行 拼接 而不是全部替换！！！
2 下拉刷新页面
  1 触发下拉刷新事件 需要在页面的json文件中开启一个配置项
    找到 触发下拉刷新的事件
  2 重置 数据 数组
  3 重置页码 设置为1
  4 重新发送请求
  5 数据请求回来 需要手动的关闭 等待效果

 */

    //页面上滑滚动条触底事件
    onReachBottom() {
        const currentPage = this.QueryParams.pagenum;
        if (currentPage >= this.totalPages) {
            wx.showToast({title: '没有下一页数据了'});
        } else {
            this.QueryParams.pagenum++;
            //发送新的请求
            this.getGoodsList();
        }
    },

    //下拉刷新
    onPullDownRefresh() {
        //重置页码、清空数组
        this.QueryParams.pagenum = 1;
        this.setData({goodsList: []});
        //发送新的请求
        this.getGoodsList();
    }
})
